home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 082 (1989-02-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 082 (1989-02-15)(Ossowski, Stefan)(DE)(PD).adf / TinyCycle / TinyCycle.ASM < prev    next >
Assembly Source File  |  1988-11-11  |  27KB  |  1,268 lines

  1. ;*************************************************************************
  2. ;*
  3. ;* Dieses Programm ist Public Domain und wurde mit dem Profimat-Assembler
  4. ;* von Data Becker erstellt. Das Kopieren für den privaten
  5. ;* Gebrauch ist erlaubt. Sollen das Programm oder Teile daraus für
  6. ;* kommerzielle Zwecke verwendet werden, bitte ich darum, sich mit
  7. ;* mir in Verbindung zu setzen.
  8. ;*
  9. ;* © 1987 Richard Englert, Flößaustraße 160, 8510 Fürth, Tel.:0911/708255
  10. ;*
  11. ;* letzte Änderung: 20-09-1987
  12. ;*
  13. ;* TinyCycle ist ein Tron-Clone mit einfacher Grafik (aber mit einigen
  14. ;* Extras).
  15. ;* Gestartet wird das Programm entweder über CLI oder Workbench. Nach dem
  16. ;* Start werden einige Parameter eingestellt, die TinyCycle über Requester
  17. ;* vom Spieler erfragt:
  18. ;*
  19. ;* Geschwindigkeit:
  20. ;*    -Normal: normale Spielgeschwindogkeit; vor jedem Durchlauf wird
  21. ;*             mittels Delay-Funktion eine fünfzigstel Sekunde gewartet.
  22. ;*    -Horror: keine Verzögerung. Die eine fünfzigstel Sekunde macht's
  23. ;*             wirklich aus. (Ausprobieren !!)
  24. ;*
  25. ;* Spieler 1:
  26. ;*    -Tastatur: Spieler 1 benutzt die Cursor-Tasten um zu steuern.
  27. ;*    -Joystick: Spieler 1 benutzt einen Joystick in Port 1.
  28. ;*
  29. ;* Spieler 2:
  30. ;*    -Ja:   ein zweiter Spieler steuert mit einem Joystick in Port 2
  31. ;*           einen eigenen Fahrer.
  32. ;*    -Nein: kein zweiter Spieler. Dafür kommt automatisch ein Robo-
  33. ;*           Driver ins Spiel.
  34. ;*
  35. ;* Robo-Driver:
  36. ;*    -Ja:   spielen zwei Menschen gegeneinander, gibt es noch die
  37. ;*           Möglichkeit, einen Computergesteuerten Spieler mitmischen
  38. ;*           zu lassen.
  39. ;*    -Nein: nur die zwei menschlichen (?) Spieler spielen gegeneinander.
  40. ;*
  41. ;* Spielt man zu zweit und mit Computer, sollte man Versuchen, gemeinsam
  42. ;* gegen den Robo-Driver anzukommen, und sich nicht gegeseitig den Hahn
  43. ;* abzudrehen. Der Robo-Driver ist zwar nicht sonderlich intelligent,
  44. ;* aber dadurch, daß sich die zwei menschlichen Spieler bekämpfen, bekommt
  45. ;* er aber doch die meisten Punkte.
  46. ;*
  47. ;* Wer seine Reaktionen testen will, sollte alleine gegen den Computer
  48. ;* mit Geschwindigkeit Horror spielen.
  49. ;*
  50. ;* Auf Sound habe ich verzichtet, da ich, wie der Name TinyCycle schon
  51. ;* aus drückt, besonders auf die Kürze des Programmcodes geachtet habe.
  52. ;* Allerdings ist es nach allen Erweiterungen und Zusätzen, die mir
  53. ;* beim Programmieren eingefallen sind, doch etwa 3-mal so groß geworden,
  54. ;* wie vorgesehen.
  55. ;*
  56. ;* Gestartet wird nach der Parametereingabe mit der DEL-Taste. Ein neues
  57. ;* Spiel wird entweder durch Druck auf den Feuerknopf eines der beiden
  58. ;* Joysticks oder durch drücken der DEL-Taste.
  59. ;* Nach jedem Spiel kann man außerdem die Parameter neu einstellen, dazu
  60. ;* HELP drücken, oder TinyCycle verlassen (ESC).
  61. ;*
  62. ;*************************************************************************
  63.  
  64.  INCLUDE 'ram:Amiga.ASM'
  65.  
  66. ; AmigaDos-Funktionen:
  67.  
  68. _LVOOpenLibrary   EQU -552
  69. _LVOCloseLibrary  EQU -414
  70. _LVOOpenScreen    EQU -198
  71. _LVOCloseScreen   EQU -66
  72. _LVOOpenWindow    EQU -204
  73. _LVOCloseWindow   EQU -72
  74. _LVOSetWindowTitles EQU -276
  75. _LVOWritePixel    EQU -324
  76. _LVOReadPixel     EQU -318
  77. _LVOSetAPen       EQU -342
  78. _LVODelay         EQU -198
  79. _LVOSetRGB4       EQU -288
  80. _LVOClearScreen   EQU -48
  81. _LVOMove          EQU -240
  82. _LVODraw          EQU -246
  83. _LVOSetTaskPri    EQU -300
  84. _LVOSetPointer    EQU -270
  85. _LVOAutoRequest   EQU -348
  86.  
  87. ; Konstanten
  88.  
  89. RastPort          EQU $32
  90. ViewPort          EQU $2C
  91.  
  92. ;*************************************************************************
  93. ;Hauptprogramm:
  94. ;*************************************************************************
  95.  
  96.  INIT_AMIGA
  97.  
  98.  LEA IntuitionName,A1            ;Intuition Library
  99.  MOVEQ #0,D0                     ;öffnen
  100.  CALLSYS OpenLibrary
  101.  MOVE.L D0,IntuitionBase
  102.  BEQ EXIT
  103.  
  104.  LEA GfxName,A1                  ;Graphics Library
  105.  MOVEQ #0,D0                     ;öffnen
  106.  CALLSYS OpenLibrary
  107.  MOVE.L D0,GfxBase
  108.  BEQ EXIT
  109.  
  110.  LEA DosName,A1                  ;Dos Library
  111.  MOVEQ #0,D0                     ;öffnen
  112.  CALLSYS OpenLibrary
  113.  MOVE.L D0,DosBase
  114.  BEQ EXIT
  115.  
  116.  LEA ScrDef,A0                   ;Screen öffnen
  117.  LINKSYS OpenScreen,IntuitionBase
  118.  MOVE.L D0,Screen
  119.  BEQ EXIT
  120.  
  121.  MOVE.L D0,A1
  122.  LEA ViewPort(A1),A0             ;ViewPort des Screens
  123.  MOVE.L A0,VP
  124.  
  125.  CLR.L D0                        ;Farbregister 0
  126.  CLR.L D1                        ;mit schwarz belegen
  127.  CLR.L D2
  128.  CLR.L D3
  129.  LINKSYS SetRGB4,GfxBase
  130.  
  131.  MOVE.L VP,A0
  132.  MOVEQ.L #1,D0                   ;Register 1: weiß
  133.  MOVE.L #$F,D1
  134.  MOVE.L #$F,D2
  135.  MOVE.L #$F,D3
  136.  LINKSYS SetRGB4,GfxBase
  137.  
  138.  MOVE.L VP,A0
  139.  MOVEQ.L #2,D0                   ;Register 2: grün
  140.  MOVE.L #$6,D1
  141.  MOVE.L #$F,D2
  142.  MOVE.L #$0,D3
  143.  LINKSYS SetRGB4,GfxBase
  144.  
  145.  MOVE.L VP,A0
  146.  MOVEQ.L #3,D0                   ;und Register 3: rot
  147.  MOVE.L #$D,D1
  148.  MOVE.L #$5,D2
  149.  MOVE.L #$0,D3
  150.  LINKSYS SetRGB4,GfxBase
  151.  
  152.  LEA WinDef,A0                   ;Window öffnen
  153.  LINKSYS OpenWindow,IntuitionBase
  154.  MOVE.L D0,Window
  155.  BEQ EX
  156.  
  157.  MOVE.L D0,A0
  158.  MOVE.L RastPort(A0),A1          ;RastPort des Windows
  159.  MOVE.L A1,RP
  160.  
  161.  BSR Parameter                   ;Parameter einstellen
  162.  
  163.  BSR Rahmen                      ;Rahmen zeichnen
  164.  
  165.  MOVE.L Window,A0
  166.  LEA MouseData,A1                ;Mauszeiger für Window
  167.  MOVE.L #15,D0                   ;unsichtbar werden lassen
  168.  MOVE.L #15,D1
  169.  MOVEQ #-1,D2
  170.  MOVEQ #-1,D3
  171.  LINKSYS SetPointer,IntuitionBase
  172.  
  173. WarteDel:
  174.  CMP.B #115,$BFEC01              ;auf DEL-Taste warten
  175.  BNE WarteDel
  176.  
  177. Neues_Spiel:
  178.  MOVE.W #80,J1X                  ;Anfangskoordinaten für
  179.  MOVE.W #140,J1Y                 ;Spieler 1 und 2, und
  180.  MOVE.W #240,J2X                 ;den Computergesteuerten
  181.  MOVE.W #140,J2Y                 ;dritten Spieler setzen
  182.  MOVE.W #160,RbX
  183.  MOVE.W #140,RbY
  184.  
  185.  MOVE.L Window,A0                ;Screentitelzeile
  186.  SUB.L A1,A1
  187.  
  188.  TST.W RobFlag
  189.  BEQ SC3                         ;entsprechend der
  190.  
  191.  TST.W Joy2Flag
  192.  BEQ SC2
  193.  LEA ScrTitle1,A2                ;Einstellung ( 2 Spieler und
  194.  BRA SetW                        ; Robo, oder
  195.  
  196. SC2:
  197.  LEA ScrTitle2,A2                ; 1 Spieler und Robo, oder
  198.  BRA SetW
  199.  
  200. SC3:
  201.  LEA ScrTitle3,A2                ; nur 2 Spieler)
  202.  
  203. SetW:
  204.  LINKSYS SetWindowTitles,IntuitionBase   ;setzen
  205.  
  206.  CLR.W D4
  207.  CLR.W D5
  208.  
  209. Hauptschleife:                   ;Hauptprogrammschleife
  210.  MOVEM.W D4-D5,-(SP)             ;in D4/D5 Daten für Tastaturabfrage
  211.  
  212.  MOVE.L #14,D4
  213.  MOVE.L #15,D5
  214.  
  215.  CLR.L D7
  216.  
  217.  MOVE.W $DFF00C,D0               ;Port 2 abfragen
  218.  MOVE.W D0,D1
  219.  MOVE.W D1,D2
  220.  MOVE.W D2,D3                    ;und die Richtungen in
  221.  
  222.  LSL.W D5,D0                     ;D0 für runter
  223.  LSR.W D5,D0
  224.  
  225.  LSL.W D4,D1                     ;D1 für rechts
  226.  LSR.W D5,D1
  227.  
  228.  LSL.W #7,D2                     ;D2 für rauf
  229.  LSR.W D5,D2
  230.  
  231.  LSL.W #6,D3                     ;und D3 für links
  232.  LSR.W D5,D3                     ;bringen
  233.  
  234.  TST.W D1                        ;nach rechts ?
  235.  BEQ qwa
  236.  MOVEQ.L #4,D7                   ;ja, dann D7 = 4
  237.  BRA Joy1Test
  238.  
  239. qwa:
  240.  TST.W D0                        ;nach unten ?
  241.  BEQ qay
  242.  MOVEQ.L #2,D7                   ;ja, dann D7 = 2
  243.  BRA Joy1Test
  244.  
  245. qay:
  246.  TST.W D3                        ;nach links ?
  247.  BEQ wsx
  248.  MOVEQ.L #3,D7                   ;ja, dann D7 = 3
  249.  BRA Joy1Test
  250.  
  251. wsx:
  252.  TST.W D2                        ;oder nach oben ?
  253.  BEQ Joy1Test
  254.  MOVEQ.L #1,D7                   ;dann D7 = 1
  255.  
  256. Joy1Test:
  257.  CLR.L D6
  258.  
  259.  MOVE.W $DFF00A,D0               ;gleiches Spiel, wie für
  260.  MOVE.W D0,D1                    ;Joystick-Port 2
  261.  MOVE.W D1,D2
  262.  MOVE.W D2,D3
  263.  
  264.  LSL.W D5,D0
  265.  LSR.W D5,D0
  266.  
  267.  LSL.W D4,D1
  268.  LSR.W D5,D1
  269.  
  270.  LSL.W #7,D2
  271.  LSR.W D5,D2
  272.  
  273.  LSL.W #6,D3
  274.  LSR.W D5,D3
  275.  
  276.  TST.W D1
  277.  BEQ qwe
  278.  MOVEQ.L #4,D6
  279.  BRA KeyTest
  280.  
  281. qwe:
  282.  TST.W D0
  283.  BEQ qas
  284.  MOVEQ.L #2,D6
  285.  BRA KeyTest
  286.  
  287. qas:
  288.  TST.W D3
  289.  BEQ wsd
  290.  MOVEQ.L #3,D6
  291.  BRA KeyTest
  292.  
  293. wsd:
  294.  TST.W D2
  295.  BEQ KeyTest
  296.  MOVEQ.L #1,D6
  297.  
  298. KeyTest:
  299.  MOVEM.W (SP)+,D4-D5             ;Tastatur abfragen
  300.  
  301.  TST.W KeyFlag                   ;wird Tastatur gebraucht ?
  302.  BEQ Joy2Up                      ;nein, dann Joy 2 auswerten
  303.  
  304.  MOVE.B D4,D5
  305.  MOVE.B $BFEC01,D4               ;welche Taste gedrückt ?
  306.  
  307.  CMP.B D4,D5                     ;gleiche Taste, wie beim
  308.  BEQ Joy2Up                      ;letzten Mal, dann Joy 2
  309.  
  310.  CMP.W #1,X1                     ;testen, ob gegen die Fahrt-
  311.  BNE UI1                         ;richtung gesteuert werden
  312.  CMP.B #97,D4                    ;soll, wenn ja, dann
  313.  BEQ Joy2Up                      ;ignorieren
  314.  
  315. UI1:
  316.  CMP.W #-1,X1                    ;soll gegen Fahrtrichtung
  317.  BNE UI2                         ;gesteuert werden ?
  318.  CMP.B #99,D4
  319.  BEQ Joy2Up                      ;ja, dann überspringen
  320.  
  321. UI2:
  322.  CMP.W #1,Y1                     ;wie eben
  323.  BNE UI3
  324.  CMP.B #103,D4
  325.  BEQ Joy2Up
  326.  
  327. UI3:
  328.  CMP.W #-1,Y1                    ;wie eben
  329.  BNE KeyUp
  330.  CMP.B #101,D4
  331.  BEQ Joy2Up
  332.  
  333. KeyUp:
  334.  CMP.B #103,D4                   ;nach oben steuern ?
  335.  BNE KeyDown
  336.  CLR.L X1                        ;vorige Richtung löschen
  337.  MOVE.W #-1,D0                   ;und neue Richtung setzen
  338.  MOVE.W D0,Y1
  339.  
  340.  BRA Joy2Up                      ;Joy 2 auswerten
  341.  
  342. KeyDown:
  343.  CMP.B #101,D4                   ;nach unten steuern ?
  344.  BNE KeyLeft
  345.  CLR.L X1                        ;wieder vorige Richtung löschen
  346.  MOVE.W #1,D0                    ;und neue setzen
  347.  MOVE.W D0,Y1
  348.  
  349.  BRA Joy2Up
  350.  
  351. KeyLeft:
  352.  CMP.B #97,D4                    ;nach links ?
  353.  BNE KeyRight
  354.  CLR.L X1                        ;wie gehabt
  355.  MOVE.W #-1,D0
  356.  MOVE.W D0,X1
  357.  
  358.  BRA Joy2Up
  359.  
  360. KeyRight:
  361.  CMP.B #99,D4                    ;nach rechts ?
  362.  BNE Joy2Up
  363.  CLR.L X1                        ;nochmal das gleiche Spiel
  364.  MOVE.W #1,D0
  365.  MOVE.W D0,X1
  366.  
  367. Joy2Up:
  368.  TST.W Joy2Flag                  ;wird Joy 2 gebraucht ?
  369.  BEQ TJ1                         ;nein, dann Joy 1 testen
  370.  
  371.  TST.W D7                        ;Joy 2 in keine Richtung, dann
  372.  BEQ TJ1                         ;gleich Joy 1 testen
  373.  
  374.  CMP.W #1,X2                     ;wieder wie oben, beim Tastatur-
  375.  BNE ZU1                         ;test prüfen, ob in die Gegen-
  376.  CMP.W #3,D7                     ;richtung gesteuert werden soll,
  377.  BEQ TJ1                         ;und wenn ja, überspringen
  378.  
  379. ZU1:
  380.  CMP.W #-1,X2                    ;das ganze für alle 4 Richtungen
  381.  BNE ZU2
  382.  CMP.W #4,D7
  383.  BEQ TJ1
  384.  
  385. ZU2:
  386.  CMP.W #1,Y2                     ;nochmal
  387.  BNE ZU3
  388.  CMP.W #1,D7
  389.  BEQ TJ1
  390.  
  391. ZU3:
  392.  CMP.W #-1,Y2                    ;und noch einmal
  393.  BNE ZU4
  394.  CMP.W #2,D7
  395.  BEQ TJ1
  396.  
  397. ZU4:
  398.  CMP.W #1,D7                     ;Joy 2 nach oben ?
  399.  BNE Joy2Down
  400.  CLR.L X2                        ;ja, dann alte Richtung löschen
  401.  MOVE.W #-1,D0                   ;und neue Richtung setzen
  402.  MOVE.W D0,Y2
  403.  
  404.  BRA TJ1                         ;Joy 1 auswerten
  405.  
  406. Joy2Down:
  407.  CMP.W #2,D7                     ;Joy 2 nach unten ?
  408.  BNE Joy2Left
  409.  CLR.L X2                        ;wenn ja, wieder alte Richtung
  410.  MOVE.W #1,D0                    ;löschen und neue setzen
  411.  MOVE.W D0,Y2
  412.  
  413.  BRA TJ1
  414.  
  415. Joy2Left:
  416.  CMP.W #3,D7                     ;das gleiche für links
  417.  BNE Joy2Right
  418.  CLR.L X2
  419.  MOVE.W #-1,D0
  420.  MOVE.W D0,X2
  421.  
  422.  BRA TJ1
  423.  
  424. Joy2Right:
  425.  CMP.W #4,D7                     ;und noch für rechts
  426.  BNE TJ1
  427.  CLR.L X2
  428.  MOVE.W #1,D0
  429.  MOVE.W D0,X2
  430.  
  431. TJ1:
  432.  TST.W KeyFlag                   ;soll Tastatur benutzt werden ?
  433.  BNE Rob                         ;ja, dann gleich Robbi auswerten
  434.  
  435.  TST.W D6                        ;in keine Richtung gedrückt ?
  436.  BEQ Rob                         ;auch Robbi besuchen
  437.  
  438.  CMP.W #1,X1                     ;wie gehabt, alle 4 Richtungen
  439.  BNE QU1
  440.  CMP.W #3,D6                     ;abfragen, ob in die Gegenrichtung
  441.  BEQ Rob                         ;gesteuert werden soll
  442.  
  443. QU1:
  444.  CMP.W #-1,X1
  445.  BNE QU2
  446.  CMP.W #4,D6
  447.  BEQ Rob
  448.  
  449. QU2:
  450.  CMP.W #1,Y1
  451.  BNE QU3
  452.  CMP.W #1,D6
  453.  BEQ Rob
  454.  
  455. QU3:
  456.  CMP.W #-1,Y1
  457.  BNE Joy1Up
  458.  CMP.W #2,D6
  459.  BEQ Rob
  460.  
  461. Joy1Up:
  462.  CMP.W #1,D6                     ;Joy 2 nach oben ?
  463.  BNE Joy1Down
  464.  CLR.L X1                        ;wieder alte Richtung löschen
  465.  MOVE.W #-1,D0                   ;und neue setzen (Gähn)
  466.  MOVE.W D0,Y1
  467.  
  468.  BRA Rob                         ;Computerzug
  469.  
  470. Joy1Down:
  471.  CMP.W #2,D6                     ;nach unten ?
  472.  BNE Joy1Left
  473.  CLR.L X1
  474.  MOVE.W #1,D0
  475.  MOVE.W D0,Y1
  476.  
  477.  BRA Rob
  478.  
  479. Joy1Left:
  480.  CMP.W #3,D6                     ;oder vielleicht nach links
  481.  BNE Joy1Right
  482.  CLR.L X1
  483.  MOVE.W #-1,D0
  484.  MOVE.W D0,X1
  485.  
  486.  BRA Rob
  487.  
  488. Joy1Right:
  489.  CMP.W #4,D6                     ;oder etwa nach rechts ?
  490.  BNE Rob
  491.  CLR.L X1
  492.  MOVE.W #1,D0
  493.  MOVE.W D0,X1
  494.  
  495. Rob:
  496.  TST.W RobFlag                   ;Computergesteuerter Spieler ?
  497.  BEQ TAD
  498.  
  499.  ADD.W #1,Zlr                    ;ja, dann spätestens nach 200
  500.  CMP.W #200,Zlr                  ;Zügen die Richtung änderm
  501.  BNE RbTst
  502.  CLR.W Zlr
  503.  CMP.W #1,RX                     ;fährt Rob nach rechts ?
  504.  BNE TsX
  505.  CLR.L RX                        ;dann neue Richtung wählen
  506.  
  507.  BSR Random                      ;Zufall mit ins Spiel bringen
  508.  TST.B D0
  509.  BNE JU1
  510.  MOVE.W #1,RY                    ;und nach unten
  511.  BRA RbTst
  512.  
  513. JU1:
  514.  MOVE.W #-1,RY                   ;oder oben umlenken
  515.  BRA RbTst
  516.  
  517. TsX:
  518.  CMP.W #-1,RX                    ;das selbe für linke Richtung
  519.  BNE TsY
  520.  CLR.L RX
  521.  
  522.  BSR Random
  523.  TST.B D0
  524.  BEQ JU2
  525.  MOVE.W #1,RY
  526.  BRA RbTst
  527.  
  528. JU2:
  529.  MOVE.W #-1,RY
  530.  BRA RbTst
  531.  
  532. TsY:
  533.  CMP.W #1,RY                     ;und nach unten
  534.  BNE TsY2
  535.  CLR.L RX
  536.  
  537.  BSR Random
  538.  TST.B D0
  539.  BEQ JU3
  540.  MOVE.W #1,RX
  541.  BRA RbTst
  542.  
  543. JU3:
  544.  MOVE.W #-1,RX
  545.  BRA RbTst
  546.  
  547. TsY2:
  548.  CLR.L RX                        ;und schließlich für oben
  549.  
  550.  BSR Random
  551.  TST.B D0
  552.  BEQ JU4
  553.  MOVE.W #1,RX
  554.  BRA RbTst
  555.  
  556. JU4:
  557.  MOVE.W #-1,RX
  558.  
  559. RbTst:
  560.  CMP.W #1,RX                     ;fährt Rob nach rechts ?
  561.  BNE TX2
  562.  
  563.  MOVE.W RbX,D0                   ;was ist rechts von ihm ?
  564.  ADDQ.W #1,D0
  565.  MOVE.W RbY,D1
  566.  MOVE.L RP,A1
  567.  LINKSYS ReadPixel,GfxBase
  568.  TST.B D0
  569.  BEQ TAD                         ;nichts, dann weiterfahren
  570.  
  571.  MOVE.W RbX,D0                   ;wenn dort schon ein Punkt ist
  572.  MOVE.W RbY,D1
  573.  ADDQ.W #1,D1                    ;dann mal schauen, was unter
  574.  MOVE.L RP,A1                    ;Rob ist
  575.  LINKSYS ReadPixel,GfxBase
  576.  TST.B D0
  577.  BNE RobUp                       ;wenn dort ein Punkt ist, nach oben
  578.  
  579.  MOVE.W RbX,D0
  580.  MOVE.W RbY,D1                   ;wenn unter ihm auch nichts ist,
  581.  SUBQ.W #1,D1
  582.  MOVE.L RP,A1                    ;dann schauen, was über ihm ist
  583.  LINKSYS ReadPixel,GfxBase
  584.  TST.B D0
  585.  BNE RobDown                     ;wenn schon ein Punkt, nach unten
  586.  
  587.  BSR Random                      ;weder über noch unter Rob ein Punkt
  588.  TST.B D0                        ;dann Zufall ins Spiel bringen
  589.  BEQ RobUp                       ;und entweder nach oben, oder
  590.  
  591.  BRA RobDown                     ;unten weiterfahren
  592.  
  593. TX2:
  594.  CMP.W #-1,RX                    ;der gleiche Test wie für rechts
  595.  BNE TY1                         ;nur für links
  596.  
  597.  MOVE.W RbX,D0
  598.  SUBQ.W #1,D0
  599.  MOVE.W RbY,D1
  600.  MOVE.L RP,A1
  601.  LINKSYS ReadPixel,GfxBase
  602.  TST.B D0
  603.  BEQ TAD
  604.  
  605.  MOVE.W RbX,D0
  606.  MOVE.W RbY,D1
  607.  ADDQ.W #1,D1
  608.  MOVE.L RP,A1
  609.  LINKSYS ReadPixel,GfxBase
  610.  TST.B D0
  611.  BNE RobUp
  612.  
  613.  MOVE.W RbX,D0
  614.  MOVE.W RbY,D1
  615.  SUBQ.W #1,D1
  616.  MOVE.L RP,A1
  617.  LINKSYS ReadPixel,GfxBase
  618.  TST.B D0
  619.  BNE RobDown
  620.  
  621.  BSR Random
  622.  TST.B D0
  623.  BEQ RobUp
  624.  
  625.  BRA RobDown
  626.  
  627. TY1:
  628.  CMP.W #1,RY                     ;und nun für Fahrtrichtung
  629.  BNE TY2                         ;unten
  630.  
  631.  MOVE.W RbX,D0
  632.  MOVE.W RbY,D1
  633.  ADDQ.W #1,D1
  634.  MOVE.L RP,A1
  635.  LINKSYS ReadPixel,GfxBase
  636.  TST.B D0
  637.  BEQ TAD
  638.  
  639.  MOVE.W RbX,D0
  640.  SUBQ.W #1,D0
  641.  MOVE.W RbY,D1
  642.  MOVE.L RP,A1
  643.  LINKSYS ReadPixel,GfxBase
  644.  TST.B D0
  645.  BNE RobRight
  646.  
  647.  MOVE.W RbX,D0
  648.  ADDQ.W #1,D0
  649.  MOVE.W RbY,D1
  650.  MOVE.L RP,A1
  651.  LINKSYS ReadPixel,GfxBase
  652.  TST.B D0
  653.  BNE RobLeft
  654.  
  655.  BSR Random
  656.  TST.B D0
  657.  BEQ RobRight
  658.  
  659.  BRA RobLeft
  660.  
  661. TY2:
  662.  MOVE.W RbX,D0                   ;und schließlich für oben
  663.  MOVE.W RbY,D1
  664.  SUBQ.W #1,D1
  665.  MOVE.L RP,A1
  666.  LINKSYS ReadPixel,GfxBase
  667.  TST.B D0
  668.  BEQ TAD
  669.  
  670.  MOVE.W RbX,D0
  671.  SUBQ.W #1,D0
  672.  MOVE.W RbY,D1
  673.  MOVE.L RP,A1
  674.  LINKSYS ReadPixel,GfxBase
  675.  TST.B D0
  676.  BNE RobRight
  677.  
  678.  MOVE.W RbX,D0
  679.  ADDQ.W #1,D0
  680.  MOVE.W RbY,D1
  681.  MOVE.L RP,A1
  682.  LINKSYS ReadPixel,GfxBase
  683.  TST.B D0
  684.  BNE RobLeft
  685.  
  686.  BSR Random
  687.  TST.B D0
  688.  BEQ RobRight
  689.  
  690.  BRA RobLeft
  691.  
  692. RobUp:
  693.  CLR.L RX                        ;Robbi nach oben steuern
  694.  MOVE.W RY,D0                    ;alte Richtung löschen
  695.  MOVE.W #-1,D0                   ;und neue setzen
  696.  MOVE.W D0,RY
  697.  
  698.  BRA TAD
  699.  
  700. RobDown:
  701.  CLR.L RX                        ;gleiches Spiel nach unten
  702.  MOVE.W RY,D0
  703.  MOVE.W #1,D0
  704.  MOVE.W D0,RY
  705.  
  706.  BRA TAD
  707.  
  708. RobLeft:
  709.  CLR.L RX                        ;nach links
  710.  MOVE.W RX,D0
  711.  MOVE.W #-1,D0
  712.  MOVE.W D0,RX
  713.  
  714.  BRA TAD
  715.  
  716. RobRight:
  717.  CLR.L RX                        ;oder nach rechts
  718.  MOVE.W RX,D0
  719.  MOVE.W #1,D0
  720.  MOVE.W D0,RX
  721.  
  722. TAD:
  723.  MOVEM.W D4-D7,-(SP)             ;alles auswerten und die Punkte
  724.                                  ;setzen
  725.  TST.W Joy2Flag                  ;Joy 2 wird benötigt ?
  726.  BEQ DRJ2
  727.  
  728.  MOVE.W J2X,D0                   ;ja, dann alte Punkt-
  729.  MOVE.W J2Y,D1                   ;koordinaten nach D0/D1 bringen
  730.  MOVE.W X2,D2                    ;und einen Punkt, entsprechend
  731.  MOVE.W Y2,D3                    ;der Richtung neue Koordinaten
  732.  ADD.W D2,D0                     ;berechnen
  733.  ADD.W D3,D1
  734.  
  735.  MOVE.W D0,J2X                   ;ist dort schon ein Punkt ?
  736.  MOVE.W D1,J2Y
  737.  MOVE.L RP,A1
  738.  LINKSYS ReadPixel,GfxBase
  739.  
  740.  TST.B D0
  741.  BNE ENDE2                       ;ja, dann Spieler 2 kollidiert
  742.  
  743.  MOVE.L RP,A1                    ;nein, Farbe setzen
  744.  MOVEQ.L #1,D0                   ;Register 1
  745.  LINKSYS SetAPen,GfxBase
  746.  
  747.  MOVE.W J2X,D0                   ;und neuen Punkt setzen
  748.  MOVE.W J2Y,D1
  749.  MOVE.L RP,A1
  750.  LINKSYS WritePixel,GfxBase
  751.  
  752. DRJ2:
  753.  MOVE.W J1X,D0                   ;das gleiche für Spieler 1
  754.  MOVE.W J1Y,D1
  755.  MOVE.W X1,D2
  756.  MOVE.W Y1,D3
  757.  ADD.W D2,D0                     ;neue Koordinaten
  758.  ADD.W D3,D1
  759.  
  760.  MOVE.W D0,J1X
  761.  MOVE.W D1,J1Y
  762.  MOVE.L RP,A1                    ;ist dort schon ein Punkt ?
  763.  LINKSYS ReadPixel,GfxBase
  764.  
  765.  TST.B D0
  766.  BNE ENDE1                       ;ja, dann Spieler 1 kollidiert
  767.  
  768.  MOVE.L RP,A1
  769.  MOVEQ.L #3,D0                   ;nein, Farbe für Spieler 1
  770.  LINKSYS SetAPen,GfxBase
  771.  
  772.  MOVE.W J1X,D0
  773.  MOVE.W J1Y,D1                   ;und Punkt setzen
  774.  MOVE.L RP,A1
  775.  LINKSYS WritePixel,GfxBase
  776.  
  777.  TST.W RobFlag                   ;spielt Robbi auch mit ?
  778.  BEQ WAB
  779.  
  780.  MOVE.W RbX,D0                   ;ja, dann neue
  781.  MOVE.W RbY,D1                   ;Koordinaten berechnen
  782.  MOVE.W RX,D2
  783.  MOVE.W RY,D3
  784.  ADD.W D2,D0
  785.  ADD.W D3,D1
  786.  
  787.  MOVE.W D0,RbX
  788.  MOVE.W D1,RbY                   ;und prüfen, ob schon ein Punkt
  789.  MOVE.L RP,A1
  790.  LINKSYS ReadPixel,GfxBase
  791.  
  792.  TST.B D0
  793.  BNE ENDE3
  794.  
  795.  MOVE.L RP,A1                    ;nein, dann Farbe und
  796.  MOVEQ.L #2,D0
  797.  LINKSYS SetAPen,GfxBase
  798.  
  799.  MOVE.W RbX,D0
  800.  MOVE.W RbY,D1                   ;neuen Punkt setzen
  801.  MOVE.L RP,A1
  802.  LINKSYS WritePixel,GfxBase
  803.  
  804. WAB:
  805.  MOVE.L Speed,D1                 ;Verzögerung
  806.  LINKSYS Delay,DosBase
  807.  
  808.  MOVEM.W (SP)+,D4-D7
  809.  
  810.  BRA Hauptschleife               ;und zum Anfang
  811.  
  812. ENDE1:
  813.  ADD.W #4,SP                     ;Stack korrigieren
  814.  MOVE.L Window,A0                ;Spieler 1 Kollidiert
  815.  SUB.L A1,A1
  816.  LEA P1Title,A2                  ;Meldung ausgeben
  817.  LINKSYS SetWindowTitles,IntuitionBase
  818.  TST.W Joy2Flag
  819.  BEQ DD3                         ;und entsprechend der
  820.  
  821.  BSR ADD2                        ;Einstellung neuen Punktestand
  822.  
  823. DD3:
  824.  TST.W RobFlag                   ;setzen
  825.  BEQ CLW
  826.  
  827.  BSR ADD3
  828.  BRA CLW
  829.  
  830. ENDE2:
  831.  ADD.W #4,SP
  832.  MOVE.L Window,A0                ;Ende bei Spieler 2
  833.  SUB.L A1,A1
  834.  LEA P2Title,A2                  ;Meldung
  835.  LINKSYS SetWindowTitles,IntuitionBase
  836.  BSR ADD1
  837.  
  838.  TST.W RobFlag
  839.  BEQ CLW                         ;und Punktestand
  840.  
  841.  BSR ADD3
  842.  BRA CLW
  843.  
  844. ENDE3:
  845.  ADD.W #4,SP
  846.  MOVE.L Window,A0                ;und nochmal für Robbi
  847.  SUB.L A1,A1
  848.  LEA P3Title,A2
  849.  LINKSYS SetWindowTitles,IntuitionBase
  850.  BSR ADD1
  851.  
  852.  TST.W Joy2Flag
  853.  BEQ CLW
  854.  
  855.  BSR ADD2
  856.  
  857. CLW:
  858.  CMP.B #117,$BFEC01              ;ESC gedrückt, dann Ende
  859.  BEQ ENDE_SPIEL                  ;des Spiels
  860.  CMP.B #115,$BFEC01              ;DEL, neues Spiel
  861.  BEQ NG
  862.  MOVE.B $BFE001,D0               ;Feuerknopf in Port 2
  863.  TST.B D0                        ;gedrückt, dann neues Spiel
  864.  BPL NG
  865.  LSL.B #1,D0                     ;oder Feuerknopf in Port 1
  866.  TST.B D0
  867.  BPL NG                          ;dann auch neues Spiel
  868.  CMP.B #65,$BFEC01               ;HELP, dann Parameter einstellen
  869.  BNE CLW
  870.  
  871.  BSR Parameter
  872.  
  873.  LEA ScrTitle1,A0                ;Spielstände wieder auf Null setzen
  874.  MOVE.L #'0000',14(A0)
  875.  MOVE.L #'0000',22(A0)
  876.  MOVE.L #'0000',30(A0)
  877.  
  878.  LEA ScrTitle2,A0
  879.  MOVE.L #'0000',14(A0)
  880.  MOVE.L #'0000',22(A0)
  881.  
  882.  LEA ScrTitle3,A0
  883.  MOVE.L #'0000',14(A0)
  884.  MOVE.L #'0000',30(A0)
  885.  
  886. NG:
  887.  MOVE.L RP,A1                    ;Window löschen
  888.  LINKSYS ClearScreen,GfxBase
  889.  MOVE.L RP,A1
  890.  BSR Rahmen                      ;Rahmen zeichnen
  891.  BRA Neues_Spiel                 ;und von vorne anfangen
  892.  
  893. ENDE_SPIEL:
  894.  MOVE.L Window,A0                ;Window schließen
  895.  LINKSYS CloseWindow,IntuitionBase
  896.  
  897. EX:
  898.  MOVE.L Screen,A0                ;Screen schließen
  899.  LINKSYS CLoseScreen,IntuitionBase
  900.  
  901. EXIT:
  902.  
  903. ;Libraries schließen
  904.  
  905.  MOVE.L IntuitionBase,D0         ;Intuitionlib
  906.  BEQ.S No_Lib
  907.  MOVE.L D0,A1
  908.  CALLSYS CloseLibrary
  909.  MOVE.L GfxBase,D0               ;Graphicslib
  910.  BEQ.S No_Lib
  911.  MOVE.L D0,A1
  912.  CALLSYS CloseLibrary
  913.  MOVE.L DosBase,D0               ;Doslib
  914.  BEQ.S No_Lib
  915.  MOVE.L D0,A1
  916.  CALLSYS CloseLibrary
  917. No_Lib:
  918.  EXIT_AMIGA
  919.  
  920. Rahmen:
  921.  MOVEQ.L #2,D0                   ;Rahmenfarbe
  922.  LINKSYS SetAPen,GfxBase
  923.  
  924.  MOVE.L RP,A1                    ;linker oberer Punkt
  925.  CLR.L D0
  926.  MOVE.L #12,D1
  927.  LINKSYS Move,GfxBase
  928.  
  929.  MOVE.L RP,A1                    ;von dort eine Linie zum
  930.  CLR.L D0                        ;linken unteren Rahmenpunkt
  931.  MOVE.L #255,D1
  932.  LINKSYS Draw,GfxBase
  933.  
  934.  MOVE.L RP,A1
  935.  MOVE.L #319,D0                  ;zur rechten unteren Ecke
  936.  MOVE.L #255,D1
  937.  LINKSYS Draw,GfxBase
  938.  
  939.  MOVE.L RP,A1
  940.  MOVE.L #319,D0                  ;zur rechten oberen Ecke
  941.  MOVE.L #12,D1
  942.  LINKSYS Draw,GfxBase
  943.  
  944.  MOVE.L RP,A1
  945.  CLR.L D0                        ;und zum Ausgangspunkt zurück
  946.  MOVE.L #12,D1
  947.  LINKSYS Draw,GfxBase
  948.  
  949.  RTS
  950.  
  951. ADD1:
  952.  TST.W RobFlag                   ;Spielstand für Spieler 1
  953.  BEQ J2F                         ;erhöhen und entsprechend
  954.  
  955.  TST.W Joy2Flag                  ;der Einstellung
  956.  BEQ RJ1
  957.  LEA ScrTitle1,A0                ;Titelzeile aussuchen
  958.  BRA DD_1
  959.  
  960. RJ1:
  961.  LEA ScrTitle2,A0
  962.  BRA DD_1
  963.  
  964. J2F:
  965.  LEA ScrTitle3,A0
  966.  
  967. DD_1:
  968.  MOVE.L 22(A0),D0
  969.  BSR ADDo
  970.  MOVE.L D0,22(A0)
  971.  RTS
  972.  
  973. ADD2:
  974.  TST.W RobFlag                   ;wie für Spieler 1
  975.  BEQ J2J1
  976.  LEA ScrTitle1,A0
  977.  BRA DD_2
  978.  
  979. J2J1:
  980.  LEA ScrTitle3,A0
  981.  
  982. DD_2:
  983.  MOVE.L 30(A0),D0
  984.  BSR ADDo
  985.  MOVE.L D0,30(A0)
  986.  RTS
  987.  
  988. ADD3:
  989.  TST.W Joy2Flag                  ;und noch einmal
  990.  BEQ J1Rb
  991.  LEA ScrTitle1,A0
  992.  BRA DD_3
  993.  
  994. J1Rb:
  995.  LEA ScrTitle2,A0
  996.  
  997. DD_3:
  998.  MOVE.L 14(A0),D0
  999.  BSR ADDo
  1000.  MOVE.L D0,14(A0)
  1001.  RTS
  1002.  
  1003.  
  1004. ADDo:
  1005.  ADDQ.L #1,D0                    ;Einerstelle um eins erhöhen
  1006.  CMP.B #$3A,D0
  1007.  BEQ ADDo_1
  1008.  RTS
  1009.  
  1010. ADDo_1:
  1011.  MOVE.B #$30,D0                  ;wenn nötig, Zehnerstelle
  1012.  MOVE.L D0,D1                    ;erhöhen, und Einerstelle auf
  1013.  LSR.L #8,D1                     ;Null setzen
  1014.  ADD.B #1,D1
  1015.  CMP.B #$3A,D1
  1016.  BEQ ADDo_2
  1017.  ADD.L #$100,D0
  1018.  RTS
  1019.  
  1020. ADDo_2:
  1021.  SUB.L #$900,D0                  ;Zehnerstelle auf Null setzen
  1022.  LSR.L #8,D1
  1023.  ADD.B #1,D1                     ;und Hunderterstelle um eins
  1024.  CMP.B #$3A,D1                   
  1025.  BEQ ADDo_3                      ;erhöhen
  1026.  ADD.L #$10000,D0
  1027.  RTS
  1028.  
  1029. ADDo_3:
  1030.  SUB.L #$90000,D0                ;Hunderterstelle auf Null setzen
  1031.  LSR.L #8,D1
  1032.  ADD.B #1,D1                     ;und Tausenderstelle erhöhen
  1033.  CMP.B #$3A,D1                   ;>9999, dann auf 0000 setzen
  1034.  SUB.L #$9000000,D0
  1035.  RTS
  1036.  ADD.L #$1000000,D0
  1037.  RTS
  1038.  
  1039. Abs_Ende:
  1040.  CMP.B #117,$BFEC01
  1041.  BEQ ENDE_SPIEL
  1042.  MOVE.L (SP)+,D0
  1043.  BRA Abs_Ende
  1044.  
  1045. Random:
  1046.  MOVE.L DosBase,A0               ;Zufallszahl aus Datestamp
  1047.  ADD.L #$22,A0
  1048.  MOVE.L (A0),A0                  ;der Doslib holen
  1049.  ADD.L #$13,A0
  1050.  MOVE.B (A0),D0
  1051.  LSL.B #6,D0                     ;Bit 1 der Zahl der Ticks
  1052.  LSR.B #7,D0                     ;nach D0
  1053.  RTS
  1054.  
  1055. Parameter:                       ;Parameter einstellen
  1056.  MOVE.L Window,A0
  1057.  LEA Frage,A1                    ;Frage nach der Geschwindigkeit
  1058.  LEA R,A2
  1059.  LEA L,A3
  1060.  MOVE.L #0,D0                    ;als Autorequester
  1061.  MOVE.L #0,D1
  1062.  MOVE.L #200,D2
  1063.  MOVE.L #70,D3
  1064.  LINKSYS AutoRequest,IntuitionBase
  1065.  MOVE.L D0,Speed
  1066.  
  1067.  MOVE.L Window,A0
  1068.  LEA Frage1,A1                   ;Tastatur oder Joystick
  1069.  LEA R1,A2
  1070.  LEA L1,A3                       ;für Spieler 1
  1071.  MOVE.L #0,D0
  1072.  MOVE.L #0,D1
  1073.  MOVE.L #200,D2
  1074.  MOVE.L #70,D3
  1075.  LINKSYS AutoRequest,IntuitionBase
  1076.  MOVE.W D0,KeyFlag
  1077.  
  1078.  MOVE.L Window,A0
  1079.  LEA Frage2,A1                   ;spielt Spieler 2 mit ?
  1080.  LEA R2,A2
  1081.  LEA L2,A3
  1082.  MOVE.L #0,D0
  1083.  MOVE.L #0,D1
  1084.  MOVE.L #200,D2
  1085.  MOVE.L #70,D3
  1086.  LINKSYS AutoRequest,IntuitionBase
  1087.  MOVE.W D0,Joy2Flag
  1088.  
  1089.  TST.W D0
  1090.  BNE RoboTest                    ;nein, dann muß Robbi
  1091.  MOVE.W #1,RobFlag               ;gegen Spieler 1 spielen
  1092.  RTS
  1093.  
  1094. RoboTest:
  1095.  MOVE.L Window,A0
  1096.  LEA Frage3,A1                   ;spielt Robbi mit, wenn
  1097.  LEA R3,A2
  1098.  LEA L3,A3                       ;auch Spieler 2 dabei ist ?
  1099.  MOVE.L #0,D0
  1100.  MOVE.L #0,D1
  1101.  MOVE.L #200,D2
  1102.  MOVE.L #70,D3
  1103.  LINKSYS AutoRequest,IntuitionBase
  1104.  MOVE.W D0,RobFlag
  1105.  
  1106.  RTS
  1107.  
  1108.  ALIGN
  1109.  DATA
  1110. IntuitionName:  DC.B 'intuition.library',0
  1111. GfxName:        DC.B 'graphics.library',0
  1112.  
  1113.  ALIGN
  1114. DosName:        DC.B 'dos.library',0
  1115.  
  1116.  ALIGN
  1117. ScrDef:
  1118.  DC.W    0,0,320,256,2
  1119.  DC.B    3,1
  1120.  DC.W    2,15
  1121.  DC.L    0,ScrName,0,0
  1122.  
  1123. ScrName: DC.B 'Sticks einstöpseln & <DEL> drücken',0
  1124.  
  1125.  ALIGN
  1126.  
  1127. WinDef:
  1128.  DC.W 0,0,320,256
  1129.  DC.B 0,1
  1130.  DC.L 0,$1900,0,0,WName
  1131. Screen: DC.L 0
  1132.  DC.L 0
  1133.  DC.W 320,256,320,256,15
  1134.  
  1135. WName: DC.B 'TinyCycle V4.41',0
  1136.  
  1137.  ALIGN
  1138. ScrTitle1: DC.B 'TinyCycle Rob:0000 S1:0000 S2:0000',0
  1139.  
  1140.  ALIGN
  1141. ScrTitle2: DC.B 'TinyCycle Rob:0000 S1:0000',0
  1142.  
  1143.  ALIGN
  1144. ScrTitle3: DC.B 'TinyCycle          S1:0000 S2:0000',0
  1145.  
  1146.  ALIGN
  1147. P1Title:   DC.B 'Spieler 1 hat verloren',0
  1148.  
  1149.  ALIGN
  1150. P2Title:   DC.B 'Spieler 2 hat verloren',0
  1151.  
  1152.  ALIGN
  1153. P3Title:   DC.B 'Robo-Driver hat verloren',0
  1154.  
  1155.  ALIGN
  1156. X1: DC.W 1
  1157. Y1: DC.W 0
  1158. X2: DC.W -1
  1159. Y2: DC.W 0
  1160. RX: DC.W 0
  1161. RY: DC.W -1
  1162.  
  1163.  ALIGN
  1164. MouseData:      DC.L 0
  1165.                 DC.L 0,0,0,0,0,0
  1166.                 DC.L 0,0,0,0,0,0
  1167.                 DC.L 0,0,0,0,0,0
  1168.                 DC.L 0,0,0,0,0,0
  1169.                 DC.L 0,0,0,0,0,0
  1170.                 DC.L 0
  1171.  
  1172.  ALIGN
  1173. Frage:     DC.B 0,1,0,0
  1174.            DC.W 20,15
  1175.            DC.L 0,Txt,0
  1176. Txt: DC.B 'Geschwindigkeit',0
  1177.  
  1178.  ALIGN
  1179. R: DC.B 0,1,0,0
  1180.     DC.W 5,3
  1181.     DC.L 0,RText,0
  1182. RText: DC.B 'Normal',0
  1183.  
  1184.  ALIGN
  1185. L:    DC.B 0,1,0,0
  1186.       DC.W 5,3
  1187.       DC.L 0,LText,0
  1188. LText: DC.B 'Horror',0
  1189.  
  1190.  ALIGN
  1191. Frage1:    DC.B 0,1,0,0
  1192.            DC.W 20,15
  1193.            DC.L 0,Text1,0
  1194. Text1: DC.B 'Spieler 1 mit:',0
  1195.  
  1196.  ALIGN
  1197. R1: DC.B 0,1,0,0
  1198.     DC.W 5,3
  1199.     DC.L 0,R1Text,0
  1200. R1Text: DC.B 'Tastatur',0
  1201.  
  1202.  ALIGN
  1203. L1:   DC.B 0,1,0,0
  1204.       DC.W 5,3
  1205.       DC.L 0,L1Text,0
  1206. L1Text: DC.B 'Joystick',0
  1207.  
  1208.  ALIGN
  1209. Frage2:    DC.B 0,1,0,0
  1210.            DC.W 20,15
  1211.            DC.L 0,Text2,0
  1212. Text2: DC.B 'Spieler 2 ?',0
  1213.  
  1214.  ALIGN
  1215. R2: DC.B 0,1,0,0
  1216.     DC.W 5,3
  1217.     DC.L 0,R2Text,0
  1218. R2Text: DC.B ' Ja ',0
  1219.  
  1220.  ALIGN
  1221. L2:   DC.B 0,1,0,0
  1222.       DC.W 5,3
  1223.       DC.L 0,L2Text,0
  1224. L2Text: DC.B 'Nein',0
  1225.  
  1226.  ALIGN
  1227. Frage3:    DC.B 0,1,0,0
  1228.            DC.W 20,15
  1229.            DC.L 0,Text3,0
  1230. Text3: DC.B 'Robo-Driver ?',0
  1231.  
  1232.  ALIGN
  1233. R3: DC.B 0,1,0,0
  1234.     DC.W 5,3
  1235.     DC.L 0,R3Text,0
  1236. R3Text: DC.B ' Ja ',0
  1237.  
  1238.  ALIGN
  1239. L3:   DC.B 0,1,0,0
  1240.       DC.W 5,3
  1241.       DC.L 0,L3Text,0
  1242. L3Text: DC.B 'Nein',0
  1243.  
  1244.  
  1245.  ALIGN
  1246.  
  1247. KeyFlag:       DC.W 1
  1248. Joy2Flag:      DC.W 0
  1249. RobFlag:       DC.W 1
  1250. Speed:         DC.L 1
  1251.  
  1252.  BSS
  1253. IntuitionBase: DS.L 1
  1254. GfxBase:       DS.L 1
  1255. Window:        DS.L 1
  1256. RP:            DS.L 1
  1257. VP:            DS.L 1
  1258. DosBase:       DS.L 1
  1259. J1X:           DS.W 1
  1260. J1Y:           DS.W 1
  1261. J2X:           DS.W 1
  1262. J2Y:           DS.W 1
  1263. RbX:           DS.W 1
  1264. RbY:           DS.W 1
  1265. Zlr:           DS.W 1
  1266.  
  1267.  END
  1268.